package org.javahispano.javacup.tacticas_aceptadas.jcrosas.chuky.futbolista.habilidad;


import org.javahispano.javacup.tacticas_aceptadas.jcrosas.chuky.futbolista.Futbolista;
import org.javahispano.javacup.tacticas_aceptadas.jcrosas.chuky.futbolista.FutbolistaBase;
import org.javahispano.javacup.tacticas_aceptadas.jcrosas.chuky.util.PaseJugada;
import org.javahispano.javacup.tacticas_aceptadas.jcrosas.chuky.util.PosicionCampo;

/**
 * @author Joan Crosas
 *
 */
public class JugadaInExtremis extends JugadaMortal {

	/**
	 * @param futbolista
	 */
	public JugadaInExtremis(Futbolista futbolista) {
		super(futbolista);
		errorMax = FutbolistaBase.JUGADA_MORTAL_IN_EXTREMIS_ERROR_MAX;
	}
	
	@Override
	public boolean ejecutar() {
		if( futbolista.getIteracionesParaRematar() == 0 && 
				futbolista.balonEncima( futbolista.getVisionPartido().getBalon() ) &&
				isJugadaPosible( FutbolistaBase.JUGADA_MORTAL_POSICION_BALON_IN_EXTREMIS, FutbolistaBase.JUGADA_MORTAL_IN_EXTREMIS_TIEMPO_INICIO ) ) {
			
			PaseJugada paseJugadaMortal = evaluarJugada( FutbolistaBase.JUGADA_MORTAL_POSICION_BALON_IN_EXTREMIS );
			if( paseJugadaMortal != null ) {
				iniciarJugada( paseJugadaMortal.getPosicionJugadaBalon(), paseJugadaMortal );
				return true;
			}
		}
		return false;
	}

	@Override
	public boolean isJugadaPosible(PosicionCampo posicionJugadaBalon, int tiempoJugada) {
		inicializar( posicionJugadaBalon );
		if( futbolistaAtacante1.posicionAtaque != null && futbolistaAtacante2.posicionAtaque != null ) {
			double distanciaFutbolista1 = futbolistaAtacante1.futbolista.distanciaRecorrida( tiempoJugada );
			double distanciaDestino1 = futbolistaAtacante1.posicionAtaque.distancia( futbolistaAtacante1.futbolista.getPosicion() );
			
			double distanciaFutbolista2 = futbolistaAtacante2.futbolista.distanciaRecorrida( tiempoJugada );
			double distanciaDestino2 = futbolistaAtacante2.posicionAtaque.distancia( futbolistaAtacante2.futbolista.getPosicion() );
			
			double distanciaPorteria = futbolista.getDistanciaPorteriaRival();
			
			if( ( distanciaFutbolista1 >= distanciaDestino1 || 
					distanciaFutbolista2 >= distanciaDestino2 ) &&
					distanciaPorteria < 40.0 ) {
				return true;
			}
		}
		
		return false;
		
	}
		
	
	

}
